package com.ruoyi.configuration.service.impl;

import java.math.BigDecimal;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.ruoyi.configuration.mapper.MgServicePriceConfMapper;
import com.ruoyi.configuration.domain.MgServicePriceConf;
import com.ruoyi.configuration.service.IMgServicePriceConfService;

/**
 * 服务价格配置Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-01-16
 */
@Service
public class MgServicePriceConfServiceImpl implements IMgServicePriceConfService 
{

	RedisTemplate<String, ?> redisTemplate;
	
	@Autowired
    public void setRedisTemplate(RedisTemplate<String,?> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }
	
    @Autowired
    private MgServicePriceConfMapper mgServicePriceConfMapper;

    /**
     * 查询服务价格配置
     * 
     * @param id 服务价格配置主键
     * @return 服务价格配置
     */
    @Override
    public MgServicePriceConf selectMgServicePriceConfById(String id)
    {
        return mgServicePriceConfMapper.selectMgServicePriceConfById(id);
    }

    /**
     * 查询服务价格配置列表
     * 
     * @param mgServicePriceConf 服务价格配置
     * @return 服务价格配置
     */
    @Override
    public List<MgServicePriceConf> selectMgServicePriceConfList(MgServicePriceConf mgServicePriceConf)
    {
        return mgServicePriceConfMapper.selectMgServicePriceConfList(mgServicePriceConf);
    }

    /**
     * 新增服务价格配置
     * 
     * @param mgServicePriceConf 服务价格配置
     * @return 结果
     */
    @Override
    public int insertMgServicePriceConf(MgServicePriceConf mgServicePriceConf)
    {
    	Integer serviceId = mgServicePriceConf.getServiceId();
    	
    	if (null == serviceId) {
    		return -1;
    	}
    	
    	int intValue = serviceId.intValue();
//		if (1 > intValue || 2 < intValue) {
//			return -2;
//		}
    	
        mgServicePriceConf.setCreateTime(DateUtils.getNowDate());
        mgServicePriceConf.setUpdateTime(DateUtils.getNowDate());
        if(0 == (mgServicePriceConf.getUrgent())){
            mgServicePriceConf.setUrgentStartTime(0L);
            mgServicePriceConf.setUrgentEndTime(0L);
            mgServicePriceConf.setAdditionalChargeRatio(BigDecimal.ZERO);
        }
        
        if (null == mgServicePriceConf.getSchemeType()) {
        	mgServicePriceConf.setSchemeType((byte) 3);
        }
        
        //客服报价
        if(2 == (mgServicePriceConf.getBillingMethod())){
            mgServicePriceConf.setUrgentStartTime(0L);
            mgServicePriceConf.setUrgentEndTime(0L);
            mgServicePriceConf.setAdditionalChargeRatio(BigDecimal.ZERO);
            mgServicePriceConf.setCustomerPrice(BigDecimal.ZERO);
        }
        
    	redisTemplate.delete("service-conf:");
        try {
        	
        	if (1 == intValue || 2 == intValue) {
        		mgServicePriceConf.setHavaTranslationProof((byte) 1);
        	} 
        	
        	if (7 == intValue) {
        		mgServicePriceConf.setUseCheckCoupon((byte) 1);
        	}
        	
        	return mgServicePriceConfMapper.insertMgServicePriceConf(mgServicePriceConf);
        } catch (Exception e) {
        	e.printStackTrace();
        	return -3;
        }
    }

    /**
     * 修改服务价格配置
     * 
     * @param mgServicePriceConf 服务价格配置
     * @return 结果
     */
    @Override
    public int updateMgServicePriceConf(MgServicePriceConf mgServicePriceConf)
    {
        mgServicePriceConf.setUpdateTime(DateUtils.getNowDate());
        if(0 == (mgServicePriceConf.getUrgent())){
            mgServicePriceConf.setUrgentStartTime(0L);
            mgServicePriceConf.setUrgentEndTime(0L);
            mgServicePriceConf.setAdditionalChargeRatio(BigDecimal.ZERO);
        }
        //客服报价
        if(2 == (mgServicePriceConf.getBillingMethod())){
            mgServicePriceConf.setUrgentStartTime(0L);
            mgServicePriceConf.setUrgentEndTime(0L);
            mgServicePriceConf.setAdditionalChargeRatio(BigDecimal.ZERO);
            mgServicePriceConf.setCustomerPrice(BigDecimal.ZERO);
        }
        
    	redisTemplate.delete("service-conf:");
        
        return mgServicePriceConfMapper.updateMgServicePriceConf(mgServicePriceConf);
    }

    /**
     * 批量删除服务价格配置
     * 
     * @param ids 需要删除的服务价格配置主键
     * @return 结果
     */
    @Override
    public int deleteMgServicePriceConfByIds(String[] ids)
    {
        return mgServicePriceConfMapper.deleteMgServicePriceConfByIds(ids);
    }

    /**
     * 删除服务价格配置信息
     * 
     * @param id 服务价格配置主键
     * @return 结果
     */
    @Override
    public int deleteMgServicePriceConfById(String id)
    {
        return mgServicePriceConfMapper.deleteMgServicePriceConfById(id);
    }

	@Override
	public List<MgServicePriceConf> selectMgServicePriceConfByWordSize() {
		// TODO Auto-generated method stub
		return mgServicePriceConfMapper.selectMgServicePriceConfByWordSize();
	}
}
